API Requests এবং Data Handling (GET, POST, PUT, DELETE)
Android অ্যাপ্লিকেশনে API Requests (GET, POST, PUT, DELETE) এর মাধ্যমে ডেটা রিট্রিভ, আপডেট, তৈরি, এবং ডিলিট করা হয়। এ ধরনের রিকোয়েস্টগুলি সাধারণত HTTP প্রোটোকলের মাধ্যমে একটি RESTful API সার্ভারে করা হয়। OkHttp এবং Retrofit এর মতো লাইব্রেরি ব্যবহার করে API রিকোয়েস্ট এবং ডেটা হ্যান্ডলিং করা সহজ হয়। নিচে API রিকোয়েস্ট এবং ডেটা হ্যান্ডলিং নিয়ে বিস্তারিত আলোচনা এবং উদাহরণ দেওয়া হলো।
১. GET Request
GET রিকোয়েস্ট সাধারণত রিমোট সার্ভার থেকে ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়। এটি সাধারণত একটি URL এর মাধ্যমে API কল করে ডেটা ফেচ করে এবং রেসপন্স রিটার্ন করে।
উদাহরণ: OkHttp দিয়ে GET Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/data")
.get()
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
// রেসপন্স ডেটা প্রসেস করা যেতে পারে
}
}
});
উদাহরণ: Retrofit দিয়ে GET Request
public interface ApiService {
@GET("data")
Call<List<MyModel>> getData();
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
Call<List<MyModel>> call = apiService.getData();
call.enqueue(new Callback<List<MyModel>>() {
@Override
public void onResponse(Call<List<MyModel>> call, Response<List<MyModel>> response) {
if (response.isSuccessful()) {
List<MyModel> dataList = response.body();
// dataList প্রসেস করা যেতে পারে
}
}
@Override
public void onFailure(Call<List<MyModel>> call, Throwable t) {
t.printStackTrace();
}
});
২. POST Request
POST রিকোয়েস্ট সাধারণত ডেটা সার্ভারে সাবমিট করার জন্য ব্যবহৃত হয়, যেমন একটি ফর্ম সাবমিট করা বা নতুন রেকর্ড তৈরি করা।
উদাহরণ: OkHttp দিয়ে POST Request
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
String json = "{ \"name\": \"John\", \"email\": \"john.doe@example.com\" }";
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url("https://api.example.com/users")
.post(body)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
// রেসপন্স ডেটা প্রসেস করা যেতে পারে
}
}
});
উদাহরণ: Retrofit দিয়ে POST Request
public interface ApiService {
@POST("users")
Call<User> createUser(@Body User user);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
User newUser = new User("John", "john.doe@example.com");
Call<User> call = apiService.createUser(newUser);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User createdUser = response.body();
// createdUser প্রসেস করা যেতে পারে
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
t.printStackTrace();
}
});
৩. PUT Request
PUT রিকোয়েস্ট সাধারণত একটি এক্সিস্টিং রিসোর্স আপডেট করতে ব্যবহৃত হয়। PUT রিকোয়েস্ট একটি সম্পূর্ণ রিসোর্সের রিপ্লেসমেন্ট করতে পারে।
উদাহরণ: OkHttp দিয়ে PUT Request
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
String json = "{ \"name\": \"Jane\", \"email\": \"jane.doe@example.com\" }";
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url("https://api.example.com/users/1")
.put(body)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
// রেসপন্স ডেটা প্রসেস করা যেতে পারে
}
}
});
উদাহরণ: Retrofit দিয়ে PUT Request
public interface ApiService {
@PUT("users/{id}")
Call<User> updateUser(@Path("id") int id, @Body User user);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
User updatedUser = new User("Jane", "jane.doe@example.com");
Call<User> call = apiService.updateUser(1, updatedUser);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
// user প্রসেস করা যেতে পারে
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
t.printStackTrace();
}
});
৪. DELETE Request
DELETE রিকোয়েস্ট ব্যবহার করে একটি নির্দিষ্ট রিসোর্স বা ডেটা সার্ভার থেকে ডিলিট করা হয়।
উদাহরণ: OkHttp দিয়ে DELETE Request
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/users/1")
.delete()
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
// রেসপন্স ডেটা প্রসেস করা যেতে পারে
}
}
});
উদাহরণ: Retrofit দিয়ে DELETE Request
public interface ApiService {
@DELETE("users/{id}")
Call<Void> deleteUser(@Path("id") int id);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
Call<Void> call = apiService.deleteUser(1);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
// ডেটা ডিলিট সফল হয়েছে
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
t.printStackTrace();
}
});
API Requests এর সময় Best Practices
- ব্যাকগ্রাউন্ড থ্রেডে Networking করা: OkHttp এবং Retrofit নিজে থেকে ব্যাকগ্রাউন্ড থ্রেডে কাজ করে, যাতে UI ব্লক না হয়।
- Timeout সেট করা: নেটওয়ার্ক কলে টাইমআউট সেট করা উচিত যেন লম্বা সময় ধরে অ্যাপ আটকে না থাকে।
- Caching: HTTP রেসপন্সের জন্য ক্যাশিং ব্যবহার করা উচিত যেন ডেটা লোড দ্রুত হয়।
- HTTPS ব্যবহার করা: সবসময় HTTPS ব্যবহার করা উচিত যাতে ডেটা সিকিউর থাকে।
- Permissions: AndroidManifest.xml এ INTERNET পারমিশন যোগ করা প্রয়োজন:
<uses-permission android:name="android.permission.INTERNET" />
উপসংহার
Android এ API Requests (GET, POST, PUT, DELETE) ব্যবহার করে অ্যাপ্লিকেশন ডেটা রিট্রিভ, আপডেট, তৈরি, এবং ডিলিট করতে সক্ষম হয়। OkHttp এবং Retrofit এর মতো শক্তিশালী লাইব্রেরি ব্যবহার করে API রিকোয়েস্ট এবং ডেটা হ্যান্ডলিং করা সহজ ও কার্যকরী হয়ে ওঠে।
API রিকোয়েস্টের সময় কিছু Best Practices অনুসরণ করে যেমন ব্যাকগ্রাউন্ড থ্রেডে নেটওয়ার্ক অপারেশন করা, সঠিক টাইমআউট সেট করা, এবং সিকিউর (HTTPS) প্রোটোকল ব্যবহার করা অ্যাপ্লিকেশনের পারফরম্যান্স ও নিরাপত্তা বাড়াতে সাহায্য করে। সঠিকভাবে API রিকোয়েস্ট ম্যানেজ করলে এবং ডেটা হ্যান্ডলিং করলে Android অ্যাপ্লিকেশন আরও কার্যকরী, রেসপন্সিভ এবং ইউজার-ফ্রেন্ডলি হয়ে ওঠে।
Read more